#============================================================
#	Collision
#============================================================
# @datetime: 2022-4-20 00:19:26
#============================================================
class_name PlayerCollision
extends Node2D


onready var _detect_item : Area2D = get_node("DetectItem")
onready var _attack_area : Area2D = get_node("Direction/AttackArea")
onready var _collision_shape_2d : CollisionShape2D = get_node("Direction/AttackArea/CollisionShape2D")
onready var _on_stairs = get_node("OnStairs")


#============================================================
#   Set/Get
#============================================================
func get_host() -> KinematicBody2D:
	return owner as KinematicBody2D

func is_on_stairs() -> bool:
	return _on_stairs.is_colliding()


#============================================================
#   自定义
#============================================================
## 设置攻击碰撞形状的是否关闭
func set_attack_collision_disabled(value: bool):
	_collision_shape_2d.set_deferred("disabled", value)


#============================================================
#   连接信号
#============================================================
func _on_DetectEnemy_body_entered(body):
	if body is Enemy:
		var angle : float = MathUtil.angle_to_point(body, owner)
		if MathUtil.between(angle, PI * 0.25, PI * 0.75):
			Logger.info(self, ['踩到敌人：', body, "，角度：", rad2deg(angle)])
			# 对 Body 造成伤害
			WrapperHelper.get_damage(body).to_damage(body, {
				"damage": 1.0,
			})
			# 跳跃
			get_parent().controller.move_controller.jump(
				WrapperHelper.get_property(get_host()) \
					.get_property("jump_height") * 0.8,
				true
			)

